{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**问题：**\n",
    "假设你正在为一个电影推荐系统设计一个简单的KNN算法。我们有以下一些用户的电影评分数据，数据由两个特征组成：用户对电影A和电影B的评分，分别在1-5之间。用户的标签（电影类型偏好）是动作片（标签0）或者是喜剧片（标签1）。我们有一个新用户，他给电影A评分为3，电影B评分为4。请问这个用户可能偏好哪种类型的电影？\n",
    "\n",
    "**数据：**\n",
    "\n",
    "| 用户   | 电影A评分 | 电影B评分 | 偏好类型 |\n",
    "| ------ | --------- | --------- | -------- |\n",
    "| 用户1  | 5         | 1         | 动作片   |\n",
    "| 用户2  | 4         | 2         | 动作片   |\n",
    "| 用户3  | 2         | 5         | 喜剧片   |\n",
    "| 用户4  | 1         | 4         | 喜剧片   |\n",
    "| 用户5  | 3         | 2         | 动作片   |\n",
    "| 用户6  | 2         | 5         | 喜剧片   |\n",
    "\n",
    "你需要做以下步骤：\n",
    "1. 构造数据\n",
    "2. 创建KNN模型\n",
    "3. 使用数据训练模型\n",
    "4. 预测新用户的喜好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted preference for new user: Comedy\n"
     ]
    },
    {
     "data": {
      "image/png": "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6tWrUa9ePXh6eiIqKgpRUVFq+23fvl1rwRERERFVpjIXRiNGjKjQnWdEREREVV2ZC6OnL2kRERERGRuNBl8TERERGTMWRkRERET5WBgRERER5WNhRERERJSPhRERERFRPhZGRERERPlYGBERERHlY2FERERElI+FEREREVE+FkZERERE+VgYEREREeVjYURERESUj4URERERUT4WRkRklB49egQXFxfExcVV+r4HDRqEzz77rNL3a2x4DEkfWBgRkVFatGgR+vTpAw8PDwCKX7I9evRA7dq1YWlpCXd3d7z99ttITU3VaLvffvstOnbsCEdHRzg6OqJbt244deqUSp8PP/wQCxcu1HjbpOrpY1jYo0ePULduXUiShOTkZI22y2NIJWFhRERGJzMzE+Hh4RgzZoyyzcTEBMHBwdi1axf+/fdfrFu3DgcPHsT48eM12nZkZCSGDh2Kw4cP48SJE6hXrx6CgoJw584dZR9vb294eHhg06ZNWsvpWaPuGBY2evRoeHt7l2vbPIZUEhZGRGR09u7dCzMzM/j7+yvbHB0d8eabb8LPzw/169dHQEAA3nrrLRw9elSjbW/atAlvvfUWfHx80LRpU3z77beQy+U4dOiQSr++fftiy5YtWsnnWaTuGBZYtWoVkpOTMX369HJtm8eQSsLCiIiMzrFjx+Dn51din7t372L79u3o3LlzhfaVkZEBmUyGGjVqqLQ///zzOHXqFLKzsyu0/WdVccfw8uXL+Oijj7BhwwaYmGjnVxiPIRXGwoiIjE5cXBxq166tdtnQoUNRrVo11KlTB3Z2dvjuu+8qtK/3338fderUQbdu3VTa69Spg+zsbNy7d69C239WqTuG2dnZGDp0KD799FPUq1dPa/viMaTCWBgRkdHJysqClZWV2mXLly9HdHQ0du7cievXr2Pq1Knl3s8nn3yCLVu2YPv27UX2Z21tDUBxNoI0p+4Yzpw5E82aNcPw4cO1th8eQ3oaCyMiMjpOTk5ISkpSu8zV1RVNmzZFcHAwvv76a6xatQoJCQka72Pp0qX4+OOPsX//frWDgB8/fgwAcHZ21njbpP4Y/v777/jxxx9hZmYGMzMzBAQEAABq1qyJOXPmaLwPHkNSx0zfARARaZuPj0+ZBs0KIQBA4zEkn376KRYsWIB9+/YVO5bp77//Rt26dVGzZk2Ntk0K6o5h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ERERiIiI0FcKREREZET0WhidOXNG5Y6yqVOnAgBCQ0Oxbt06JCQkID4+Xrk8JycH06dPx507d2BtbY0WLVpg9+7d6NWrV6XHTkRERMZHr4VRly5dUNLY73Xr1qm8njFjBmbMmKHjqIiIiOhZZfBjjIiIiIi0hYURERERUT4WRkRERET5WBgRERER5WNhRERERJSPhRERERFRPhZGRERERPlYGBERERHlY2FERERElI+FEREREVE+FkZERERE+VgYEREREeVjYURERESUj4URERERUT4WRkRERET5WBgRERER5WNhRERERDrx6NEjuLi4IC4urtL3PWjQIHz22Wcar8fCiIiIiHRi0aJF6NOnDzw8PJRtkiQV+Vm9erVG27106RIGDhwIDw8PSJKEsLCwIn0+/PBDLFy4EKmpqRptm4URERERaV1mZibCw8MxZsyYIsvWrl2LhIQE5U9oaKhG287IyECDBg2wePFiuLq6qu3j7e0NDw8PbNq0SaNtszAiIiIirdu7dy/MzMzg7+9fZJmDgwNcXV2VP9bW1hptu23btvj0008xZMgQWFpaFtuvb9++2LJli0bbZmFEREREWnfs2DH4+fmpXfb222+jZs2aaNu2LVavXg25XK6TGJ5//nmcOnUK2dnZZV7HTCeREBER0TMtLi4OtWvXLtI+f/58BAQEwNraGocOHcK0adPw8OFDzJ49W+sx1KlTB9nZ2bh37x7q169fpnVYGBEREZHWZWVlwcrKqkh74QLIx8cHAPDRRx/ppDAquESXkZFR5nV4KY2IiIi0zsnJCUlJSaX2a9euHVJTU3H//n2tx/D48WMAgLOzc5nXYWFEREREWufj44PLly+X2u/cuXOwsrKCg4OD1mP4+++/UbduXdSsWbPM6/BSGhEREWldYGAgZs+ejaSkJDg6OgIAfvnlF9y7dw/+/v6wtrbG4cOH8b///Q/jxo0r8e6yp+Xk5CiLrpycHNy5cwfnz5+HjY0NGjVqpOx39OhRBAUFaRQ3zxgRERGR1rVs2RJ+fn744YcflG3m5ub46quv4O/vD29vb6xYsQIfffQRli1bprKuJElYt25dsdu+e/cufH194evri4SEBCxduhS+vr4qcyZlZWVhx44dGDt2rEZx84wRERERVYgQwLlzwLFjQGoq0LIlsHEjMH78B1iyZDrGjh0LExMT9OjR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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\", category=FutureWarning)\n",
    "# 1. X, y\n",
    "X = np.array([[5, 1], [4, 2], [2, 5], [1, 4], [3, 2], [2, 5]])\n",
    "y = np.array([0, 0, 1, 1, 0, 1])  # 0=Action, 1=Comedy\n",
    "\n",
    "# 2. Create KNN model k = 1\n",
    "knn = KNeighborsClassifier(n_neighbors=1)\n",
    "\n",
    "# 3. Train model\n",
    "knn.fit(X, y)\n",
    "\n",
    "# 4. Predict user preference\n",
    "new_user = np.array([[3, 4]])\n",
    "prediction = knn.predict(new_user)\n",
    "print(f\"Predicted preference for new user: {'Comedy' if prediction[0] == 1 else 'Action'}\")\n",
    "\n",
    "# 5. Data visualization\n",
    "plt.title(\"User Movie Preference\", size=15) \n",
    "plt.xlabel(\"Movie A rating\")\n",
    "plt.ylabel(\"Movie B rating\")\n",
    "plt.grid()\n",
    "\n",
    "# Plot original data points with different colors for different preferences\n",
    "colors = ['blue' if label == 0 else 'green' for label in y.tolist()]\n",
    "plt.scatter(X[:, 0], X[:, 1], c=colors, s=100, alpha=0.7)\n",
    "# Add legend items separately\n",
    "plt.scatter([], [], c='blue', label='Action', s=100)\n",
    "plt.scatter([], [], c='green', label='Comedy', s=100)\n",
    "\n",
    "# Plot new data point with red x marker\n",
    "plt.plot(new_user[0, 0], new_user[0, 1], 'rx', markersize=8, markeredgewidth=2, label='New User')\n",
    "\n",
    "# Get nearest neighbor index\n",
    "dist, idx = knn.kneighbors(new_user)\n",
    "nearest = X[idx[0][0]]  # Get coordinates of nearest neighbor\n",
    "\n",
    "# Draw red dashed line connecting new user and nearest neighbor\n",
    "plt.plot([new_user[0, 0], nearest[0]], [new_user[0, 1], nearest[1]], 'r--', linewidth=2, label='Nearest Neighbor')\n",
    "\n",
    "# Add coordinate text for each point\n",
    "for x, y_val in zip(X[:, 0], X[:, 1]):\n",
    "    plt.text(x, y_val+0.1, f'({x}, {y_val})') \n",
    "\n",
    "# Add coordinate text for new data point\n",
    "plt.text(new_user[0,0], new_user[0,1]+0.1, f'({new_user[0,0]}, {new_user[0,1]})')\n",
    "\n",
    "# Add legend\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
